home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 2: CDPD 1
/
Almathera Ten on Ten - Disc 2: CDPD 1.iso
/
pd
/
301-325
/
304
/
skel
/
doargs.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-03-14
|
3KB
|
128 lines
/*
*
* do_args.c - Argument processing - WB or CLI
*
*/
#include <exec/types.h>
#include <workbench/workbench.h>
#include <workbench/icon.h>
#include <workbench/startup.h>
#include <stdio.h>
#define DELAYMAX 100
#define DELAYDEF 0
#define STRINGMAX 100
extern struct WBStartup *WBenchMsg;
extern char title[];
extern long delay;
char filename[STRINGMAX];
char title[STRINGMAX]; /* Window title */
char *myname;
void *OpenLibrary();
struct IconBase *IconBase;
long atol();
/*
* General purpose Workbench argument processing subroutine.
* It retrieves arguments from the icon ToolTypes array.
*/
getWBargs()
{
struct WBArg *wbArg;
char **toolArray;
char *string;
struct DiskObject *diskObj;
if(IconBase = (struct IconBase *) OpenLibrary("icon.library",0L))
{
wbArg = WBenchMsg->sm_ArgList;
diskObj = (struct DiskObject *)GetDiskObject(wbArg->wa_Name);
if(diskObj)
{
toolArray = diskObj->do_ToolTypes;
if(string = FindToolType(toolArray,"DELAY"))
{
delay = atol(string);
if (delay <0 || delay >DELAYMAX) delay = DELAYDEF;
}
if(string = FindToolType(toolArray,"TITLE"))
{
if (*string != '\0')
{
strncpy(title, string,STRINGMAX-1);
title[STRINGMAX-1] = '\0';
}
}
if(string = FindToolType(toolArray,"FILE"))
{
if (*string != '\0')
{
strncpy(filename, string,STRINGMAX-1);
filename[STRINGMAX-1] = '\0';
}
}
FreeDiskObject(diskObj);
}
CloseLibrary(IconBase);
}
}
getCLIargs(argc,argv)
int argc;
char *argv[];
{
register char *p;
/* get command name */
myname = (argc-- < 1) ? "skel" : *argv++;
while (argc > 0)
{
argc--; /* One fewer to process */
p = *argv++; /* Get arg pointer and bump to next */
if (*p != '-') /* If no '-' it is the filename */
{
strncpy(filename, p,STRINGMAX-1);
filename[STRINGMAX-1] = '\0';
continue;
}
p++;
switch (*p) {
case 't': /* Title */
strncpy(title, ++p,STRINGMAX-1);
title[sizeof(title)-1] = '\0';
break;
case 'd': /* delay in 1/50 sec. */
delay = atoi(++p);
if (delay <0 || delay >DELAYMAX) delay = DELAYDEF;
break;
default: /* Wrong option */
usage();
done(14);
}
}
}
usage()
{
fprintf(stderr,"Usage:%s: -d# -tstr file\n",myname);
fprintf(stderr,"Workbench Application Skeleton\n");
fprintf(stderr,"-d# delay for do_it routine in 1/50 sec\n");
fprintf(stderr,"-tstr string for window title\n");
}
#ifdef AZTEC_C
_wb_parse() /* keep aztec's paws off it */
{
}
#endif